package com.company;

public class L_Counter1 {
    private static int count=0;    //计数器变量
    public L_Counter1()
    {
        //构造方法
        this.count++;    //创建实例时增加值
    }
    public int getCount()
    {
        //获取计数器的值
        return this.count;
    }
    protected void finalize()
    {
        //析构方法
        this.count--;    //实例销毁时减少值
        System.out.println("对象销毁");
    }

    public static void main(String[] args)
    {
        L_Counter1 cnt1=new L_Counter1();    //建立第一个实例
        System.out.println("数量："+cnt1.getCount());    //输出1
        L_Counter1 cnt2=new L_Counter1();    //建立第二个实例
        System.out.println("数量："+cnt2.getCount());    //输出2
        cnt2=null;    //销毁实例2
//        技巧：由于 finalize() 方法的不确定性，所以在程序中可以调用 System.gc() 或者 Runtime.gc() 方法提示垃圾回收器尽快执行垃圾回收操作。
        try
        {
            System.gc();    //清理内存
            Thread.currentThread().sleep(1000);    //延时1000毫秒
            System.out.println("数量："+cnt1.getCount());    //输出1
        }
        catch(InterruptedException e)
        {
            e.printStackTrace();
        }
    }
}
